package com.redhat.auth.application;

import java.util.List;

import com.redhat.auth.domain.Role;
import com.redhat.auth.domain.Role.Status;

/**
 * 角色管理模块接口层
 *<br />
 * @author vakin.Jiang
 *2010-4-21
 */
public interface RoleApplication{
	
	/**
	 * 根据ID查询role对象
	 * @param id
	 * @return
	 */
	public Role getRoleById(Long id);
	
	/**
	 * 创建一个角色
	 * @param role
	 * @return
	 */
	public Role createRole(Role role);
	
	
	/**
	 * 更新一个角色
	 * @param role
	 * @return
	 */
	public Role updateRole(Role role);
	
	/**
	 * 删除一个角色对象
	 * @param id
	 */
	public void deleteRoleById(Long id);
	
	/**
	 * 分页查询角色列表
	 * @param search
	 * @param currentPage
	 * @param pageSize
	 * @return
	 */
	public List<Role> queryAllByPage(Role search, int currentPage, int pageSize);
	
	/**
	 * 统计匹配记录数
	 * @param search
	 * @return
	 */
	public Long getCount(Role search);
	
	/**
	 * 按功能实体ID集合给角色进行权限分配
	 * @param currentRole
	 * @param funIds
	 * @return
	 */
	public Role addPermissions(Long id, String[] funIds);
	
	/**
	 * 状态设置
	 * @param role
	 * @param status
	 */
	public void changeStatus(Long id,Status status);
}
